package route

import (
	"github.com/gin-gonic/gin"
	"github.com/vueadmin/app/admin/internal/svc"
	"github.com/vueadmin/app/admin/sys"
	sysmiddleware "github.com/vueadmin/app/admin/sys/middleware"
	"github.com/vueadmin/middleware"
	"github.com/vueadmin/utils/conv"
)

type SysRouter struct{}

func (p SysRouter) RegisterRoute(route *gin.Engine, svcCtx *svc.ServiceContext) {
	r := route.Group(svcCtx.Config.Prefix)
	r.Use(middleware.JwtVerifyMiddleware(conv.String(svcCtx.Config.Jwt)))
	{
		r.POST("/Sys/Base/getSecrectInfo", func(c *gin.Context) { sys.System.GetSecrectInfo(c, svcCtx) })
		r.POST("/Sys/Base/secrect", func(c *gin.Context) { sys.System.Secrect(c, svcCtx) })

		r.POST("/Sys/Base/application", func(c *gin.Context) { sys.System.ApplicationList(c, svcCtx) })
		r.POST("/Sys/Base/getApplicationInfo", func(c *gin.Context) { sys.System.GetApplicationInfo(c, svcCtx) })
		r.POST("/Sys/Base/createApplication", func(c *gin.Context) { sys.System.CreateApplication(c, svcCtx) })
		r.POST("/Sys/Base/updateApplication", func(c *gin.Context) { sys.System.UpdateApplication(c, svcCtx) })
		r.POST("/Sys/Base/deleteApplication", sysmiddleware.NewDeleteApplicationMiddleware(svcCtx).Handle(), func(c *gin.Context) { sys.System.DeleteApplication(c, svcCtx) })

		r.POST("/Sys/Base/fieldList", func(c *gin.Context) { sys.System.FieldList(c, svcCtx) })
		r.POST("/Sys/Base/getFieldInfo", func(c *gin.Context) { sys.System.GetFieldInfo(c, svcCtx) })
		r.POST("/Sys/Base/configList", func(c *gin.Context) { sys.System.ConfigList(c, svcCtx) })
		r.POST("/Sys/Base/updateField", sysmiddleware.NewUpdateFieldMiddleware(svcCtx).Handle(), func(c *gin.Context) { sys.System.UpdateField(c, svcCtx) })
		r.POST("/Sys/Base/createField", sysmiddleware.NewCreateFieldMiddleware(svcCtx).Handle(), func(c *gin.Context) { sys.System.CreateField(c, svcCtx) })
		r.POST("/Sys/Base/deleteField", sysmiddleware.NewDeleteFieldMiddleware(svcCtx).Handle(), func(c *gin.Context) { sys.System.DeleteField(c, svcCtx) })
		r.POST("/Sys/Base/updateFieldExt", func(c *gin.Context) { sys.System.UpdateFieldExt(c, svcCtx) })
		r.POST("/Sys/Base/updateFieldSort", func(c *gin.Context) { sys.System.UpdateFieldSort(c, svcCtx) })
		r.POST("/Sys/Base/getTablesByMenuId", func(c *gin.Context) { sys.System.GetTablesByMenuId(c, svcCtx) })
		r.POST("/Sys/Base/copyField", func(c *gin.Context) { sys.System.CopyField(c, svcCtx) })

		r.POST("/Sys/Base/actionList", func(c *gin.Context) { sys.System.ActionList(c, svcCtx) })
		r.POST("/Sys/Base/getActionInfo", func(c *gin.Context) { sys.System.GetActionInfo(c, svcCtx) })
		r.POST("/Sys/Base/createAction", func(c *gin.Context) { sys.System.CreateAction(c, svcCtx) })
		r.POST("/Sys/Base/deleteAction", func(c *gin.Context) { sys.System.DeleteAction(c, svcCtx) })
		r.POST("/Sys/Base/updateAction", func(c *gin.Context) { sys.System.UpdateAction(c, svcCtx) })
		r.POST("/Sys/Base/updateActionExt", func(c *gin.Context) { sys.System.UpdateActionExt(c, svcCtx) })
		r.POST("/Sys/Base/updateActionSort", func(c *gin.Context) { sys.System.UpdateActionSort(c, svcCtx) })

		r.POST("/Sys/Base/getPostField", func(c *gin.Context) { sys.System.GetPostField(c, svcCtx) })
		r.POST("/Sys/Base/getTableFields", func(c *gin.Context) { sys.System.GetTableFields(c, svcCtx) })
		r.POST("/Sys/Base/getUploadList", func(c *gin.Context) { sys.System.GetUploadList(c, svcCtx) })
		r.POST("/Sys/Base/getAppInfo", func(c *gin.Context) { sys.System.GetAppInfo(c, svcCtx) })

		r.POST("/Sys/Base/menu", func(c *gin.Context) { sys.System.MenuList(c, svcCtx) })
		r.POST("/Sys/Base/createMenu", sysmiddleware.NewCreateMenuMiddleware(svcCtx).Handle(), func(c *gin.Context) { sys.System.CreateMenu(c, svcCtx) })
		r.POST("/Sys/Base/deleteMenu", sysmiddleware.NewDeleteMenuMiddleware(svcCtx).Handle(), func(c *gin.Context) { sys.System.DeleteMenu(c, svcCtx) })
		r.POST("/Sys/Base/updateMenu", sysmiddleware.NewUpdateMenuMiddleware(svcCtx).Handle(), func(c *gin.Context) { sys.System.UpdateMenu(c, svcCtx) })
		r.POST("/Sys/Base/getMenuInfo", func(c *gin.Context) { sys.System.GetMenuInfo(c, svcCtx) })
		r.POST("/Sys/Base/updateMenuExt", func(c *gin.Context) { sys.System.UpdateMenuExt(c, svcCtx) })
		r.POST("/Sys/Base/getDbType", func(c *gin.Context) { sys.System.GetDbType(c, svcCtx) })
		r.POST("/Sys/Base/copyMenu", func(c *gin.Context) { sys.System.CopyMenu(c, svcCtx) })

		r.POST("/Sys/Base/getTables", func(c *gin.Context) { sys.System.GetTables(c, svcCtx) })

		r.POST("/Sys/Base/create", func(c *gin.Context) { sys.System.Create(c, svcCtx) })
		r.POST("/Sys/Base/createByTable", func(c *gin.Context) { sys.System.CreateByTable(c, svcCtx) })
		r.POST("/Sys/Base/buildApplication", func(c *gin.Context) { sys.System.CreateApp(c, svcCtx) })

		r.POST("/Sys/ApiPost/createDocProject", func(c *gin.Context) { sys.ApiPost.CreateDocProject(c, svcCtx) })
		r.POST("/Sys/ApiPost/createApi", func(c *gin.Context) { sys.ApiPost.CreateApiDoc(c, svcCtx) })
	}
}
